# demo03_filter.py
# 函数式编程: 将一个函数作为另外一个函数的参数
# 布尔函数: 返回值是True或者False的函数
# filter(布尔函数,列表):
#   将列表中的元素依次传入布尔函数中,留下返回值为True的元素
def func01(num):
    return True if num % 2 == 1 else False
def func02(num):
    return True if num > 3 else False
if __name__ == '__main__':
    l1 = [1, 2, 3, 4, 5]
    d1 = filter(func01, l1)
    print("d1:", list(d1))  # [1, 3, 5]
    d3 = filter(func02, l1)
    print("d3:", list(d3))  # [4, 5]
    # 匿名函数
    d2=filter(lambda n:True if n%2==1 else False,l1)
    print("d2:", list(d2))
    d4 = filter(lambda n:True if n>3 else False, l1)
    print("d4:", list(d4))  # [4, 5]
